package src.itheima01;

import java.util.ArrayList;
import java.util.Collection;

/*
    java.util.Collection<E>:接口
        单列集合的根接口,里面定义的方法,
        子接口/实现类都有

    java.util.List<E>: 接口
        特点:
            1.有序(保证存入和取出元素的顺序是一致的)
            2.有索引
            3.可重复

    java.util.Set<E>: 接口
        特点:
            1.无序(不保证存入和取出元素的顺序是一致的)
            2.无索引
            3.不可重复(唯一)

    学习 接口/父类
    使用 实现类/子类

        Collection集合常用方法:

        - public boolean add(E e)：  把给定的对象添加到当前集合中 。
        - public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。
        - public boolean isEmpty(): 判断当前集合是否为空。
        - public int size(): 返回集合中元素的个数。
        - public boolean remove(E e): 把给定的对象在当前集合中删除。remove方法只删除一个元素
        - public Object[] toArray(): 把集合中的元素，存储到数组中
        - public void clear() :清空集合中所有的元素。

        要求:
            课下演示所有带all的方法
 */
public class Demo02CollectionMethod {
    public static void main(String[] args) {
        //多态的方式创建Collection集合对象,存储数据类型String
        Collection<String> coll = new ArrayList<>();
        //添加元素: add
        //coll.add("ccc");
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        System.out.println(coll);//[aaa, bbb, ccc]

        //判断是否包含"bbb"
        boolean result = coll.contains("bbb");
        System.out.println("集合中是否包含 bbb ?"+result);//true

        //判断是否包含"ddd"
        System.out.println("集合中是否包含 ddd ?"+coll.contains("ddd"));//false

        System.out.println("集合是否为空? "+coll.isEmpty());//false
        System.out.println("集合元素的数量: "+coll.size());//3

        //删除"ccc"
        System.out.println("删除ccc是否成功? "+coll.remove("ccc"));//true
        System.out.println("删除ccc后集合的内容: "+coll);//[aaa, bbb]

        System.out.println("------------");
        //遍历Collection集合
        for(int i = 0;i<coll.size();i++) {
            //coll.get(i);//错误: 因为Collection中没有定义与索引相关的方法
        }

        //public Object[] toArray(): 把集合中的元素，存储到数组中
        //每个元素提升为Object类型,如果使用子类特有方法,需要强制类型转换
        Object[] arr = coll.toArray();
        for (int i = 0; i < arr.length; i++) {
            Object obj = arr[i];
            System.out.println("字符串: "+obj+" 的长度: "+((String)obj).length());
        }
        System.out.println("------------");


        //clear() :清空集合中所有的元素
        coll.clear();
        System.out.println("集合是否为空? "+coll.isEmpty());//true
        System.out.println("集合元素的数量: "+coll.size());//0
        System.out.println(coll);//[]
    }
}
